﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Csla;
using Csla.Tools;
using DemoCSLA.Windows.Facturas;
using DemoCSLA.Libreria.Editables;
using DemoCSLA.Libreria.SoloLectura;
using System.Linq;

namespace DemoCSLA.Windows.Facturas
{
    public partial class frmLstFacturas : Csla.Tools.Plantillas._PlantillaGestor
    {

        #region Constructores
        public frmLstFacturas()
        {
            InitializeComponent();
        }
        #endregion

        #region Metodos Privados

        #endregion

        #region Botones Nuevo

        public override void Nuevo(Object sender, EventArgs e)
        {
            try
            {
                using (frmMntFacturaCabecera f = new frmMntFacturaCabecera(FacturaCabecera.NewFacturaCabecera()))
                { f.ShowDialog(this); }
            }
            catch (DataPortalException ex)
            { MessageBox.Show(ex.BusinessException.Message, ex.BusinessException.Source, MessageBoxButtons.OK, MessageBoxIcon.Information); }
            catch (Exception ex)
            { MessageBox.Show(ex.Message, "Nuevo", MessageBoxButtons.OK, MessageBoxIcon.Information); }


            this.Buscar(sender, e);

        }

        #endregion

        #region Boton Editar

        public override void Editar(Object sender, EventArgs e)
        {
            try
            {
                this.CargaDatosActuales();
                using (frmMntFacturaCabecera f = new frmMntFacturaCabecera(FacturaCabecera.GetFacturaCabecera(this.Clave)))
                {
                    f.ShowDialog();
                }
            }

            catch (DataPortalException ex)
            { MessageBox.Show(ex.BusinessException.Message, ex.BusinessException.Source, MessageBoxButtons.OK, MessageBoxIcon.Information); }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace
                   , "Editar", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }


            this.Buscar(sender, e);

        }

        #endregion

        #region Boton Eliminar

        public override void Eliminar(Object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea eliminar el registro?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {
                    this.CargaDatosActuales();
                    FacturaCabecera.DeleteFacturaCabecera(this.Clave);
                }
                catch (DataPortalException ex)
                { MessageBox.Show(ex.BusinessException.Message, ex.BusinessException.Source, MessageBoxButtons.OK, MessageBoxIcon.Information); }
                catch (Exception ex)
                { MessageBox.Show(ex.Message, "Eliminar", MessageBoxButtons.OK, MessageBoxIcon.Information); }

            }

            this.Buscar(sender, e);

        }

        #endregion

        #region Eventos del Formulario

        public override void Buscar(Object sender, EventArgs e)
        {
            try
            {
                //base.Buscar(sender, e);

                var crit = new FacturaCabeceraInfoList.FiltroCriteria();
                //Si tu clase InfoList contiene objetos Criteria
                //declara y establece sus propiedades aquí
                if (kryptonRadioButton1.Checked)
                    crit.Cliente = txtFiltro.Text;
                if (kryptonRadioButton2.Checked)
                    crit.Numero = Convert.ToInt32(txtFiltro.Text);

                CargaControl ( facturaCabeceraInfoListBindingSource,
                    FacturaCabeceraInfoList.GetFacturaCabeceraInfoList(crit)
                    .OrderBy(f => f.Numero) ) ;
            }
            catch (DataPortalException ex)
            { MessageBox.Show(ex.BusinessException.Message, ex.BusinessException.Source, MessageBoxButtons.OK, MessageBoxIcon.Information); }
            catch (Exception ex)
            { MessageBox.Show(ex.Message, "Buscar", MessageBoxButtons.OK, MessageBoxIcon.Information); }


        }

        #endregion

    }
}
